In recent years, solid state drives (SSDs) have been developed as data storage apparatuses, each using NAND flash memories (hereinafter referred to as “flash memories” in some cases) that are rewritable nonvolatile memories.
Most SSDs are of a multi-channel type, in which flash memories are managed in units of channels, and data is written to channels in parallel. In any SSD of the multi-channel type, the data (user data) to be written in each channel is used, generating error correction codes (i.e., Reed-Solomon (RS) codes, hereinafter called “parity data” in some cases), which can perform an inter-channel parity (ICP) correction process. These error correction codes are stored in the flash memories of some channels selected from the plurality of channels.
In the SSD of the multi-channel type, parity data capable of correcting data between the channels is generated and stored in the selected channels. Data to be stored in the flash memories is managed in the SSD, in the form of logic blocks. Encoded data containing the parity data is allocated to a given location (storage location) in the logic block. This process of storing the encoded data may influence the write process, which is an SDD function.